From: Florian Müllner Date: Tue, 15 Aug 2017 23:25:15 +0000 (+0200) Subject: viewSelector: Open context for highlighted search result X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~128 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=093b73b616bcbab2cf57bccf67a525a50c739708;p=gnome-shell.git viewSelector: Open context for highlighted search result To make search more efficient, users don't need to move the actual keyboard focus away from the search entry to activate the first result. However the shift+f10 shortcut to pop up the context menu via keyboard still acts on the actually focused widget, which is the entry. It makes more sense to open the context menu of the selected result instead, as that's what's highlighted and responds to keyboard activation. https://bugzilla.gnome.org/show_bug.cgi?id=675315 --- diff --git a/js/ui/search.js b/js/ui/search.js index c399880f5..30e2b301d 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -681,6 +681,15 @@ var SearchResults = new Lang.Class({ this._setSelected(this._defaultResult, highlight); }, + popupMenuDefault: function() { + // If we have a search queued up, force the search now. + if (this._searchTimeoutId > 0) + this._doSearch(); + + if (this._defaultResult) + this._defaultResult.actor.popup_menu(); + }, + navigateFocus: function(direction) { let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL; if (direction == Gtk.DirectionType.TAB_BACKWARD || diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js index ba7f46c71..7131f77bd 100644 --- a/js/ui/viewSelector.js +++ b/js/ui/viewSelector.js @@ -163,6 +163,13 @@ var ViewSelector = new Lang.Class({ this._text.connect('key-focus-out', Lang.bind(this, function() { this._searchResults.highlightDefault(false); })); + this._entry.connect('popup-menu', () => { + if (!this._searchActive) + return; + + this._entry.menu.close(); + this._searchResults.popupMenuDefault(); + }); this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped)); global.stage.connect('notify::key-focus', Lang.bind(this, this._onStageKeyFocusChanged));